package ar.edu.untref.visitor.model;

public class CalcularMontoVisitor implements Visitor {

	private double costoTotal;
	private double costoFlete;
	private double descuentoEfectivo;
	private double iva;

	@Override
	public void visitMaterial(Material material) {
		costoTotal = costoTotal + material.getPrecioUnitario()
				* material.getUnidades();
	}

	@Override
	public void visitFlete(Flete flete) {
		costoFlete = flete.getHoras() * flete.getPrecioHora();
		costoTotal = costoTotal + costoFlete;

	}

	@Override
	public void visitDescuentoEfectivo(DescuentoEfectivo descuentoEfectivo) {
		this.descuentoEfectivo = descuentoEfectivo.getPorcentajeDescuento();

	}

	@Override
	public void visitIva(Iva iva) {
		costoTotal = costoTotal + iva.getImpuesto();
	}

	@Override
	public void visit(AdicionalFeriado adicionalFeriado) {

		costoTotal = costoTotal + adicionalFeriado.getAdicionalFeriado();
	}

	public double getCostoTotal() {
		return costoTotal * ((100 - descuentoEfectivo) / 100)
				* ((100 + iva) / 100);
	}

	@Override
	public void visitManoDeObra(ManoDeObra manoDeObra, Profesional profesional) {
		costoTotal = costoTotal + manoDeObra.getTotal();

	}

}
